typedef struct{double x; double y; double z;} vector;

#define vzeroize(v)\
    (v).x = (double)0.0;\
    (v).y = (double)0.0;\
    (v).z = (double)0.0

#define vset(v1, v2)\
 (v2).x = (v1).x;\
 (v2).y = (v1).y;\
 (v2).z = (v1).z

#define vlength(v)sqrtf((((v).x * (v).x) + ((v).y * (v).y) + ((v).z * (v).z)))

#define vscale(c, v, vs)\
 (vs).x = (v).x * (c);\
 (vs).y = (v).y * (c);\
 (vs).z = (v).z * (c)

#define vscale1(c, v, vs) /* computes c once, faster when c is expression */\
{\
  double cc = (c);\
  (vs).x = (v).x * cc;\
  (vs).y = (v).y * cc;\
  (vs).z = (v).z * cc;\
}

#define vplus(v1, v2, v)\
 (v).x = (v1).x + (v2).x;\
 (v).y = (v1).y + (v2).y;\
 (v).z = (v1).z + (v2).z

#define vminus(v1, v2, v)\
 (v).x = (v1).x - (v2).x;\
 (v).y = (v1).y - (v2).y;\
 (v).z = (v1).z - (v2).z

#define vinc(v1, v2)\
 (v2).x = (v2).x + (v1).x;\
 (v2).y = (v2).y + (v1).y;\
 (v2).z = (v2).z + (v1).z

#define vdec(v1, v2)\
 (v2).x = (v2).x - (v1).x;\
 (v2).y = (v2).y - (v1).y;\
 (v2).z = (v2).z - (v1).z

#define vdot(a, b)\
 ((a).x * (b).x + (a).y * (b).y + (a).z * (b).z)

#define vcross(a, b, c)\
  (c).x = (a).y * (b).z - (b).y * (a).z;\
  (c).y = (a).z * (b).x - (a).x * (b).z;\
  (c).z = (a).x * (b).y - (b).x * (a).y


#define vnormalize(v)\
{\
  double s = 1.0 / vlength(v);\
  vscale(s, v, v);\
}

/* 
#define vnormalize(v)\
  vscale((1.0/length(v)),v)



	calc_normal


calc_normal (p1, p2, p3, norm)
vector *p1, *p2, *p3, *norm ;
{

 double coa, cob, coc ;
 double px1, py1, pz1 ;
 double px2, py2, pz2 ;
 double px3, py3, pz3 ;

 double absvec ;

 px1 = p1->x ;
 py1 = p1->y ;
 pz1 = p1->z ;

 px2 = p2->x ;
 py2 = p2->y ;
 pz2 = p2->z ;

 px3 = p3->x ;
 py3 = p3->y ;
 pz3 = p3->z ;

 coa = -(py1 * (pz2-pz3) + py2*(pz3-pz1) + py3*(pz1-pz2)) ;
 cob = -(pz1 * (px2-px3) + pz2*(px3-px1) + pz3*(px1-px2)) ;
 coc = -(px1 * (py2-py3) + px2*(py3-py1) + px3*(py1-py2)) ;

 absvec = sqrt ((double) ((coa*coa) + (cob*cob) + (coc*coc))) ;

 norm->x = coa/absvec ;
 norm->y = cob/absvec ;
 norm->z = coc/absvec ;

}


	normalize




   vprint


vprint (v)
vector v ;
{
  printf("x : %f\t y : %f\t z: %f\n", v.x, v.y, v.z) ;
}


*/
